The present invention generally relates to connectivity and performance improvements in modem relay (MR) network links. More particularly, it concerns modem relay (e.g. MR1) gateways and cached or predictive compression parameter negotiation.
The Modem Relay (MR) MR1 connection scenario (no transcompression, formerly called Type 2a) requires a first, originating modem M1 and a second, terminating modem M2 to negotiate identical compression parameters. To obtain optimal compression parameters requires end-to-end eXchange IDentification (XID) negotiation. Since XID negotiation starts with a frame from the originating modem (M1), the MR gateways need to be certain that G2<=>M2 physical connection is complete before that of M1<=>G1. In this way, G2 can forward M1's XIDc to M2 as soon as it is available, and similarly to return M2's XIDr to M1. In order to do this, a number of ideas have been provided to either delay completion of the physical connection on G1 until the physical connection on G2 is complete, or to perform XID transactions more than once, which repetition might not be expected by some server modems.
Alternatively, both gateways may decide locally to negotiate a small “default” subset of compression parameters, in order to avoid end-to-end problems. In this case, the default may be too small, giving lower compression performance than end-to-end negotiation could have achieved. Or, the default may not be small enough (e.g. one modem is actually configured for no compression), resulting in infeasible compression settings. Furthermore, this process will add to the time required to reach data mode in modem relay (MR) connections, which frustrates users waiting to get on the Internet.
Many of these techniques may be prone to systematic failures. Furthermore, this process will add to the time required to fully connect in modem relay (MR) mode, which frustrates users waiting to get on the Internet. Because of this timing issue, many gateway implementations simply use ‘local minimal’ default compression parameters (e.g., dictionary size=1K (where K=210), string size=32) to avoid a delay in the physical connection. This heuristic often results in sub-optimal compression parameters. Worse, it may occasionally fail to connect if either M1 or M2 is configured for narrower compression parameters than the minimal choice (e.g. no compression at all).